유닉스 터미널을 사용하여 XML 구문 분석
문제
가끔 XML 파일에서 임의의 데이터를 신속하게 추출하여 CSV 형식으로 만들어야합니다.Unix 터미널에서이를 수행하는 가장 좋은 방법은 무엇입니까?몇 가지 코드 예제를 좋아합니다. 예를 들어 다음 문제를 어떻게 해결할 수 있습니까?
XML 입력 예 : 라코 디스
원하는 CSV 출력 : 라코 디스
해결책
요소의 이름 속성 만 원하는 경우 빠르고 불완전한 해결책이 있습니다.
(예제 텍스트는 example 파일에 있습니다.) <인용구>
grep "이름"예 |잘라 내기 -d "\" "-f2,2 |xargs -I {} echo "{},"
다른 팁
XMLStarlet은 쿼리 / 편집 / 확인 / 변환을위한 명령 줄 툴킷입니다. XML 문서 (자세한 내용은 http://xmlstar.sourceforge.net/ 참조)
쓸 파일이 없습니다. 파일을 xmlstarlet으로 파이프하고 xpath 필터를 적용하면됩니다. 라코 디스
-m 표현식 -v 값 ''포함 된 리터럴 -n 개행
따라서 xpath의 경우 xpath 표현식은 // myel / @ name이됩니다. 두 속성 값을 제공합니다.
매우 편리한 도구
여기에 질문이 묻는 것을 정확하게 수행하는 작은 루비 스크립트가 있습니다 ( 'myel'이라는 요소에서 'name'이라는 속성을 가져옴).일반화하기 쉬워야합니다. 라코 디스
xml 파일이 다음을 포함하는 "test.xml"이라고 가정하고 원래 질문에 답합니다.
<root>
<myel name="Foo" />
<myel name="Bar" />
</root>
라코 디스
테스트 파일은 test.xml에 있습니다. 라코 디스
함정이 있습니다. 예를 들어 각 myel 이 한 줄에 있다고 엄격하게 지정되지 않은 경우 먼저 xml 파일을 "정규화"해야합니다 (따라서 각 myel 은 한 줄에 표시됨)